local side = "Bravo"

--filter side unit by unit category 2001 (Fixed Wing)/subtype 8201 (UAV) and 8202 (UCAV)
local uav = VP_GetSide({name=side}):unitsBy("Aircraft", 2001, 8201)
local ucav = VP_GetSide({name=side}):unitsBy("Aircraft", 2001, 8202)

--function setup
-- if unit.airbornetime_v (unit airbornetime in second) is zero (=unit is grounded), directly set maintenance loadout
-- if unit.airbornetime_v is NOT zero (=unit is airborne), order unit to RTB and generate event "Set (unitname) as unavailable after landing event" using UnitBaseStatus trigger and Lua action
-- see https://www.matrixgames.com/forums/viewtopic.php?f=10236&t=393497 for more info about UnitBaseStatus trigger

function SetAircraftUnavailable(tablname)
	local unit
	for k, v in ipairs(tablname) do
		unit = ScenEdit_GetUnit({guid=v.guid})

		if unit.airbornetime_v == 0 then
			ScenEdit_SetLoadout({unitname=unit.guid, LoadoutID=4}) --maintenance loadout
		else
			unit:RTB(true)

			local eventname = "Set " ..unit.name.. " as unavailable after landing event"
			local TargetFilter = {
				TargetSide = unit.side,
				TargetType = unit.type,
				TargetSubType = unit.subtype,
				SpecificUnitClass = unit.class,
				SpecificUnitID = unit.guid,
			}
			local TargetCondition= 7 --unit is landed
			local trigger = ScenEdit_SetTrigger({mode="add", name=eventname, type="UnitBaseStatus",
			TargetFilter=TargetFilter, TargetCondition=TargetCondition})

			local ScriptText =
			'local unitx = ScenEdit_UnitX() \r\n' ..
			'ScenEdit_SetLoadout({unitname=unitx.guid, LoadoutID=4})'
			ScenEdit_SetAction({mode="add", name=eventname, type="LuaScript", ScriptText=ScriptText})

			ScenEdit_SetEvent(eventname, {mode="add", IsShown=false})
			ScenEdit_SetEventTrigger (eventname, {mode="add", name=eventname})
			ScenEdit_SetEventAction (eventname, {mode="add", name=eventname})
		end
	end
end
--

if uav ~= nil then
	SetAircraftUnavailable(uav)
end

if ucav ~= nil then
	SetAircraftUnavailable(ucav)
end